__author__ = "ncll"
__data__ = "2020/11/12 9:03"


# 第一张图：4 5 6

# 4、python2.X,3.X默认的编码格式分别是什么？

# Python 2.x 默认使用 ASCII 编码格式
# Python 3.x 默认使用 UTF-8 编码格式

# 5、将hello_new_world按"_"进行切割。

# my_str = "hello_new_world"
# print(my_str.split("_"))


# 6、将数字以"0001"的格式输出到屏幕

# num = 1
# print("%.4x" % num)

# 第二张图：1-7题

# 1、 字典a = {1:1}，是否正确？

# 是

# 2、请合并列表 a = [1,2,3,4]和列表 b = [5,6,7,8]

# a = [1, 2, 3, 4]
# b = [5, 6, 7, 8]
# print(a+b)

# 3、列表a，请写出实现正序排列，倒序排列，逆序排列的内置方法

# a = [1, 4, 2, 6, 8]
# print("正序排列：")
# print(a)
# print("倒序排列：")
# print(a[::-1])
# print("逆序排列：")
# a.sort(reverse=True)
# print(a)

# 4、字典d={"k":1,"v":2},请写出d.items()的结果

# d.items([('k', 1), ('v', 2)])

# 5、复杂列表[{“k”:1,”v”:2},{“k”:12,”v”:22},{“k”:13,”v”:32}],
# 请用内置方法写出按k的倒序排列的代码。

# my_list = [{"k": 1, "v": 2}, {"k": 12, "v": 22}, {"k": 13, "v": 32}]
# my_list.sort(key= lambda zd:zd["k"],reverse= True)
# print(my_list)

# 方法二
'''my_list = [{"k": 1, "v": 2}, {"k": 12, "v": 22}, {"k": 13, "v": 32}]
my_list1 = my_list[::-1]
print(my_list1)'''


# 6、集合s = set([1,2,3,4]),d = set([2,4,9,0,3]),
# 请用内置方法写出它们的并集，交集，对称公差。

# 对称公差不明白
'''
s = set([1, 2, 3, 4])
d = set([2, 4, 9, 0, 3])

s_jj = s & d
print(s_jj)
s_bj = s | d
print(s_bj)
'''
# 7、如何把列表a=["a","b"]里的各项，转为字符串并用逗号","连接

# join():连接列表中的元素为字符串  例如：','.join()
# split():拆分字符串为列表  例如: str_b.split(",", 3) 按逗号拆分成两个

'''list_a = ["a", "b"]
my_str = ""
count = 0
for i in list_a:  # 遍历列表
    my_str = my_str + i   # 拼接
    my_str = my_str + ','
    count += 1
my_str = my_str[:(count*2-1)]   # 去掉逗号

print("列表转为字符串后的结果为  %s" % my_str)
'''
list_a = ["a", "b"]
str_b = ','.join(list_a)
print(str_b)

# 第三张图：1-6

# 1、判断下列描述是否正确，如果有错误，请指出错误的地方并改正。
#
# 字典：具有键值映射关系，无序，字典的键不能重复并且是任意数据类型
# 元组：不能修改，无序，不能索引切片，当元组中只有一个元素时，需要在元素的后面加逗号
# 列表：元素可以重复，有序，不可以反向索引，元素可以是任意类型
# 集合：元素不可以重复，可以索引，a={}声明了一个空集合

# 2、一行代码实现1-100的和

# print((1+100)*100/2)  # 第一版

# print(sum(range(1, 101)))  # 第二版

# 3、按下面要求写出完整代码：
# 使用random.random方法实现随机输出范围在[25,60)中的浮点数

# 方法一  整数+小数
import  random
# num = random.randint(25, 60)+random.random()
# print(num)
# 方法二 由于random.random()是取0-1的随机数，所以将[25,60)缩小100倍
'''while True:
    num = random.random()
    if num >= 0.25 and num < 0.6:
        num = num*100
        break
print(num)'''

# 方法三
# import  random
# num = random.uniform(25, 60)
# print(num)



# 4 下面代码输出结果是什么？请叙述一下你对生成器的理解。

# def func(m):
#     n = 4
#     while n < m:
#         yield n
#         n += 1
#
# f = func(5)
# res1 = next(f)
# res2 = next(f)
# print(res1, res2)
'''
输出结果：
1
2
理解：因为func函数有一个关键字 yield，先得到一个生成器，此时m=5
直到执行到next函数，才开始执行func函数。当执行到yield n 这行时，跳出循环，此时res1的值为1.
继续执行res2 = next(f)，此时从next程序停止的地方开始执行，所以执行n += 1，即n=2
继续执行while循环，执行到yield n，跳出循环，把n=2的值返回赋值给res2，打印输出res2 的值为 2
'''

# 第4张图：2
# 一个list对象 a=[1,2,4,3,2,2,4],需要去掉里面的重复值

'''
my_list = [1, 2, 4, 3, 2, 2, 4]

my_new_list = list(set(my_list))
print("原列表去重复后变为：%s" % my_new_list)

'''





